package cn.line5.module;

import java.util.List;

import cn.line5.seam.db.PageResult;

/**
 * <h1>模块管理业务层接口类</h1>
 * 
 * @author Liu,Xiaojun
 */
public interface ModuleService {
	/**
	 * 获取模块的所有列表-递归方法
	 */
	public List<ModuleVo> getModuleList(String parentId);
	
	/**
	 * 获取树的JS代码
	 */
	public String getModuleTreeJs();

	/**
	 * 模块列表
	 */
	public PageResult<ModuleVo> getModulePageList(String parentId,
			String currentPage);

	/**
	 * 获取模块信息
	 */
	public ModuleVo getModule(String moduleId);

	/**
	 * 添加模块
	 */
	public Boolean addModule(ModuleVo vo);

	/**
	 * 修改模块
	 */
	public Boolean modifyModule(ModuleVo vo);

	/**
	 * 模块向上排序
	 */
	public Boolean upModule(String moduleId);

	/**
	 * 模块向下排序
	 */
	public Boolean downModule(String moduleId);

	/**
	 * 删除模块
	 */
	public Boolean deleteModule(String[] moduleIds);

	/**
	 * 功能列表
	 */
	public PageResult<ModuleFunctionVo> getFunctionPageList(String moduleId,
			String currentPage);

	/**
	 * 获取功能信息
	 */
	public ModuleFunctionVo getFunction(String functionId);

	/**
	 * 添加功能
	 */
	public ModuleFunctionVo addFunction(ModuleFunctionVo vo);

	/**
	 * 修改功能
	 */
	public Boolean modifyFunction(ModuleFunctionVo vo);

	/**
	 * 功能向上排序
	 */
	public Boolean upFunction(String functionId);

	/**
	 * 功能向下排序
	 */
	public Boolean downFunction(String functionId);

	/**
	 * 删除功能
	 */
	public Boolean deleteFunction(String[] functionIds);
	
	/**
	 * 功能点列表
	 */
	public PageResult<ModuleFunctionPointVo> getPointPageList(String functionId,
			String currentPage);

	/**
	 * 获取功能点信息
	 */
	public ModuleFunctionPointVo getPoint(Integer pointId);

	/**
	 * 添加功能点
	 */
	public Boolean addPoint(ModuleFunctionPointVo vo);

	/**
	 * 修改功能点
	 */
	public Boolean modifyPoint(ModuleFunctionPointVo vo);

	/**
	 * 功能点向上排序
	 */
	public Boolean upPoint(String functionId, Integer pointId);

	/**
	 * 功能向下排序
	 */
	public Boolean downPoint(String functionId, Integer pointId);
	
	/**
	 * 删除功能点
	 */
	public Boolean deletePoint(String[] pointIds);
}
